﻿Public Class CidadeDAO

    Dim objAcessoDados As AcessoDados = New AcessoDados(Config.StringConexao)

    Public Function ListaTodos() As List(Of Cidade)
        Dim registros As DataSet = New DataSet
        registros = objAcessoDados.ExecutaSqlRetorno("select * from tb_cidade")
        Return CriarListaCid(registros)
    End Function

    Public Function CriarListaCid(ByVal Registros As DataSet) As List(Of Cidade)
        Dim lista As New List(Of Cidade)
        Dim objCid As Cidade
        For Each dr As DataRow In Registros.Tables(0).Rows
            objCid = CriarCid(dr)
            lista.Add(objCid)
        Next
        Return lista
    End Function
    Public Function CriarCid(ByVal row As DataRow) As Cidade
        Dim objCid As New Cidade
        Dim objEstadoDao As New EstadoDAO
        Dim objEstado As New Estado

        objCid.CodCid = CInt(row.Item("cod_cid"))
        objCid.NomeCid = CStr(row.Item("nome_cid"))
        objCid.Estado = objEstadoDao.SelectEstadoId(CInt(row.Item("fk_cod_est")))


        Return objCid
    End Function

    Public Function Inserir(ByVal iCidade As Cidade, ByVal cod_est As Integer) As Integer
        Dim registros As Integer
        Dim sql As New StringBuilder
        sql.Append("insert into tb_cidade (")
        sql.Append(" nome_cid, ")
        sql.Append(" fk_cod_est ")
        sql.Append(") values (")
        sql.Append("'" & iCidade.NomeCid.ToString & "',")
        sql.Append("" & cod_est & ")")
        registros = objAcessoDados.ExecutaSql(sql.ToString)
        Return registros
    End Function

    Public Function SelectCidadeId(ByVal cod_cid As Integer) As Cidade
        Dim objCid As Cidade
        Dim registro As DataSet = New DataSet

        Dim sql As New StringBuilder
        Dim strWhere As String = " Where "
        sql.Append("select * from tb_cidade ")
        sql.Append(strWhere & "cod_cid = " & cod_cid)
        registro = objAcessoDados.ExecutaSqlRetorno(sql.ToString)
        Try
            Dim objCidData As DataRow = registro.Tables(0).Rows(0)
            objCid = CriarCid(objCidData)
            Return objCid
        Catch ex As Exception
            Return Nothing
        End Try
        Return Nothing
    End Function

    Public Function SelectCidadeNome(ByVal nome_cid As String) As Cidade
        Dim objCid As Cidade
        Dim registro As DataSet = New DataSet

        Dim sql As New StringBuilder
        Dim strWhere As String = " Where "
        sql.Append("select * from tb_cidade ")
        sql.Append(strWhere & "nome_cid = '" & nome_cid.ToString & "' ORDER BY nome_cid DESC")
        registro = objAcessoDados.ExecutaSqlRetorno(sql.ToString)
        Try
            Dim objCidData As DataRow = registro.Tables(0).Rows(0)
            objCid = CriarCid(objCidData)
            Return objCid
        Catch ex As Exception
            Return Nothing
        End Try
        Return Nothing
    End Function

    Public Function ListaCidadeEstado(ByVal cod_est As Integer) As List(Of Cidade)
        Dim registros As DataSet = New DataSet
        registros = objAcessoDados.ExecutaSqlRetorno("select * from tb_cidade where fk_cod_est =" & cod_est)
        Return CriarListaCid(registros)
    End Function

End Class
